package com.wjy.Data_Structure.stack.application;

import com.wjy.Data_Structure.stack.Stack;
import com.wjy.Data_Structure.stack.StackSLinked;

//堆栈的应用
public class StackApplication {

	/**
	 * 十进制数到八进制数
	 * 
	 * @param i
	 * @return
	 */
	public int baseConversion(int i) {
		Stack s = new StackSLinked();
		while (i > 0) {
			s.push(i % 8 + "");
			i = i / 8;
		}
		String num = "";
		while (!s.isEmpty()) {
			num += s.pop();
		}
		return Integer.parseInt(num);
	}

	/**
	 * 括号匹配检测
	 * 
	 * @param str
	 *            字符串
	 * @return
	 */
	public boolean bracketMatch(String str) {
		Stack s = new StackSLinked();
		for (int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			switch (c) {
			case '{':
			case '[':
			case '(':
				s.push(Integer.valueOf(c));
				break;
			case '}':
				if (!s.isEmpty() && ((Integer) s.pop()).intValue() == '{')
					break;
				else
					return false;
			case ']':
				if (!s.isEmpty() && ((Integer) s.pop()).intValue() == '[')
					break;
				else
					return false;
			case ')':
				if (!s.isEmpty() && ((Integer) s.pop()).intValue() == '（')
					break;
				else
					return false;

			}
		}
		if (s.isEmpty())
			return true;
		else
			return false;

	}
}
